#include "main.h"


int instructionCounts[1700];
int instructionBufferSizes[1700];
const char * strings[1700];
/*********************************************************
	Module Stuff
*********************************************************/

ProfileModule::ProfileModule()
{
	LOG("ProfileModule!\n");
	//reset BPS calculations

	//GL functions
	strings[0] = "glNewList";
	strings[1] = "glEndList";
	strings[2] = "glCallList";
	strings[3] = "glCallLists";
	strings[4] = "glDeleteLists";
	strings[5] = "glGenLists";
	strings[6] = "glListBase";
	strings[7] = "glBegin";
	strings[8] = "glBitmap";
	strings[9] = "glColor3b";
	strings[10] = "glColor3bv";
	strings[11] = "glColor3d";
	strings[12] = "glColor3dv";
	strings[13] = "glColor3f";
	strings[14] = "glColor3fv";
	strings[15] = "glColor3i";
	strings[16] = "glColor3iv";
	strings[17] = "glColor3s";
	strings[18] = "glColor3sv";
	strings[19] = "glColor3ub";
	strings[20] = "glColor3ubv";
	strings[21] = "glColor3ui";
	strings[22] = "glColor3uiv";
	strings[23] = "glColor3us";
	strings[24] = "glColor3usv";
	strings[25] = "glColor4b";
	strings[26] = "glColor4bv";
	strings[27] = "glColor4d";
	strings[28] = "glColor4dv";
	strings[29] = "glColor4f";
	strings[30] = "glColor4fv";
	strings[31] = "glColor4i";
	strings[32] = "glColor4iv";
	strings[33] = "glColor4s";
	strings[34] = "glColor4sv";
	strings[35] = "glColor4ub";
	strings[36] = "glColor4ubv";
	strings[37] = "glColor4ui";
	strings[38] = "glColor4uiv";
	strings[39] = "glColor4us";
	strings[40] = "glColor4usv";
	strings[41] = "glEdgeFlag";
	strings[42] = "glEdgeFlagv";
	strings[43] = "glEnd";
	strings[44] = "glIndexd";
	strings[45] = "glIndexdv";
	strings[46] = "glIndexf";
	strings[47] = "glIndexfv";
	strings[48] = "glIndexi";
	strings[49] = "glIndexiv";
	strings[50] = "glIndexs";
	strings[51] = "glIndexsv";
	strings[52] = "glNormal3b";
	strings[53] = "glNormal3bv";
	strings[54] = "glNormal3d";
	strings[55] = "glNormal3dv";
	strings[56] = "glNormal3f";
	strings[57] = "glNormal3fv";
	strings[58] = "glNormal3i";
	strings[59] = "glNormal3iv";
	strings[60] = "glNormal3s";
	strings[61] = "glNormal3sv";
	strings[62] = "glRasterPos2d";
	strings[63] = "glRasterPos2dv";
	strings[64] = "glRasterPos2f";
	strings[65] = "glRasterPos2fv";
	strings[66] = "glRasterPos2i";
	strings[67] = "glRasterPos2iv";
	strings[68] = "glRasterPos2s";
	strings[69] = "glRasterPos2sv";
	strings[70] = "glRasterPos3d";
	strings[71] = "glRasterPos3dv";
	strings[72] = "glRasterPos3f";
	strings[73] = "glRasterPos3fv";
	strings[74] = "glRasterPos3i";
	strings[75] = "glRasterPos3iv";
	strings[76] = "glRasterPos3s";
	strings[77] = "glRasterPos3sv";
	strings[78] = "glRasterPos4d";
	strings[79] = "glRasterPos4dv";
	strings[80] = "glRasterPos4f";
	strings[81] = "glRasterPos4fv";
	strings[82] = "glRasterPos4i";
	strings[83] = "glRasterPos4iv";
	strings[84] = "glRasterPos4s";
	strings[85] = "glRasterPos4sv";
	strings[86] = "glRectd";
	strings[87] = "glRectdv";
	strings[88] = "glRectf";
	strings[89] = "glRectfv";
	strings[90] = "glRecti";
	strings[91] = "glRectiv";
	strings[92] = "glRects";
	strings[93] = "glRectsv";
	strings[94] = "glTexCoord1d";
	strings[95] = "glTexCoord1dv";
	strings[96] = "glTexCoord1f";
	strings[97] = "glTexCoord1fv";
	strings[98] = "glTexCoord1i";
	strings[99] = "glTexCoord1iv";
	strings[100] = "glTexCoord1s";
	strings[101] = "glTexCoord1sv";
	strings[102] = "glTexCoord2d";
	strings[103] = "glTexCoord2dv";
	strings[104] = "glTexCoord2f";
	strings[105] = "glTexCoord2fv";
	strings[106] = "glTexCoord2i";
	strings[107] = "glTexCoord2iv";
	strings[108] = "glTexCoord2s";
	strings[109] = "glTexCoord2sv";
	strings[110] = "glTexCoord3d";
	strings[111] = "glTexCoord3dv";
	strings[112] = "glTexCoord3f";
	strings[113] = "glTexCoord3fv";
	strings[114] = "glTexCoord3i";
	strings[115] = "glTexCoord3iv";
	strings[116] = "glTexCoord3s";
	strings[117] = "glTexCoord3sv";
	strings[118] = "glTexCoord4d";
	strings[119] = "glTexCoord4dv";
	strings[120] = "glTexCoord4f";
	strings[121] = "glTexCoord4fv";
	strings[122] = "glTexCoord4i";
	strings[123] = "glTexCoord4iv";
	strings[124] = "glTexCoord4s";
	strings[125] = "glTexCoord4sv";
	strings[126] = "glVertex2d";
	strings[127] = "glVertex2dv";
	strings[128] = "glVertex2f";
	strings[129] = "glVertex2fv";
	strings[130] = "glVertex2i";
	strings[131] = "glVertex2iv";
	strings[132] = "glVertex2s";
	strings[133] = "glVertex2sv";
	strings[134] = "glVertex3d";
	strings[135] = "glVertex3dv";
	strings[136] = "glVertex3f";
	strings[137] = "glVertex3fv";
	strings[138] = "glVertex3i";
	strings[139] = "glVertex3iv";
	strings[140] = "glVertex3s";
	strings[141] = "glVertex3sv";
	strings[142] = "glVertex4d";
	strings[143] = "glVertex4dv";
	strings[144] = "glVertex4f";
	strings[145] = "glVertex4fv";
	strings[146] = "glVertex4i";
	strings[147] = "glVertex4iv";
	strings[148] = "glVertex4s";
	strings[149] = "glVertex4sv";
	strings[150] = "glClipPlane";
	strings[151] = "glColorMaterial";
	strings[152] = "glCullFace";
	strings[153] = "glFogf";
	strings[154] = "glFogfv";
	strings[155] = "glFogi";
	strings[156] = "glFogiv";
	strings[157] = "glFrontFace";
	strings[158] = "glHint";
	strings[159] = "glLightf";
	strings[160] = "glLightfv";
	strings[161] = "glLighti";
	strings[162] = "glLightiv";
	strings[163] = "glLightModelf";
	strings[164] = "glLightModelfv";
	strings[165] = "glLightModeli";
	strings[166] = "glLightModeliv";
	strings[167] = "glLineStipple";
	strings[168] = "glLineWidth";
	strings[169] = "glMaterialf";
	strings[170] = "glMaterialfv";
	strings[171] = "glMateriali";
	strings[172] = "glMaterialiv";
	strings[173] = "glPointSize";
	strings[174] = "glPolygonMode";
	strings[175] = "glPolygonStipple";
	strings[176] = "glScissor";
	strings[177] = "glShadeModel";
	strings[178] = "glTexParameterf";
	strings[179] = "glTexParameterfv";
	strings[180] = "glTexParameteri";
	strings[181] = "glTexParameteriv";
	strings[182] = "glTexImage1D";
	strings[183] = "glTexImage2D";
	strings[184] = "glTexEnvf";
	strings[185] = "glTexEnvfv";
	strings[186] = "glTexEnvi";
	strings[187] = "glTexEnviv";
	strings[188] = "glTexGend";
	strings[189] = "glTexGendv";
	strings[190] = "glTexGenf";
	strings[191] = "glTexGenfv";
	strings[192] = "glTexGeni";
	strings[193] = "glTexGeniv";
	strings[194] = "glFeedbackBuffer";
	strings[195] = "glSelectBuffer";
	strings[196] = "glRenderMode";
	strings[197] = "glInitNames";
	strings[198] = "glLoadName";
	strings[199] = "glPassThrough";
	strings[200] = "glPopName";
	strings[201] = "glPushName";
	strings[202] = "glDrawBuffer";
	strings[203] = "glClear";
	strings[204] = "glClearAccum";
	strings[205] = "glClearIndex";
	strings[206] = "glClearColor";
	strings[207] = "glClearStencil";
	strings[208] = "glClearDepth";
	strings[209] = "glStencilMask";
	strings[210] = "glColorMask";
	strings[211] = "glDepthMask";
	strings[212] = "glIndexMask";
	strings[213] = "glAccum";
	strings[214] = "glDisable";
	strings[215] = "glEnable";
	strings[216] = "glFinish";
	strings[217] = "glFlush";
	strings[218] = "glPopAttrib";
	strings[219] = "glPushAttrib";
	strings[220] = "glMap1d";
	strings[221] = "glMap1f";
	strings[222] = "glMap2d";
	strings[223] = "glMap2f";
	strings[224] = "glMapGrid1d";
	strings[225] = "glMapGrid1f";
	strings[226] = "glMapGrid2d";
	strings[227] = "glMapGrid2f";
	strings[228] = "glEvalCoord1d";
	strings[229] = "glEvalCoord1dv";
	strings[230] = "glEvalCoord1f";
	strings[231] = "glEvalCoord1fv";
	strings[232] = "glEvalCoord2d";
	strings[233] = "glEvalCoord2dv";
	strings[234] = "glEvalCoord2f";
	strings[235] = "glEvalCoord2fv";
	strings[236] = "glEvalMesh1";
	strings[237] = "glEvalPoint1";
	strings[238] = "glEvalMesh2";
	strings[239] = "glEvalPoint2";
	strings[240] = "glAlphaFunc";
	strings[241] = "glBlendFunc";
	strings[242] = "glLogicOp";
	strings[243] = "glStencilFunc";
	strings[244] = "glStencilOp";
	strings[245] = "glDepthFunc";
	strings[246] = "glPixelZoom";
	strings[247] = "glPixelTransferf";
	strings[248] = "glPixelTransferi";
	strings[249] = "glPixelStoref";
	strings[250] = "glPixelStorei";
	strings[251] = "glPixelMapfv";
	strings[252] = "glPixelMapuiv";
	strings[253] = "glPixelMapusv";
	strings[254] = "glReadBuffer";
	strings[255] = "glCopyPixels";
	strings[256] = "glReadPixels";
	strings[257] = "glDrawPixels";
	strings[258] = "glGetBooleanv";
	strings[259] = "glGetClipPlane";
	strings[260] = "glGetDoublev";
	strings[261] = "glGetError";
	strings[262] = "glGetFloatv";
	strings[263] = "glGetIntegerv";
	strings[264] = "glGetLightfv";
	strings[265] = "glGetLightiv";
	strings[266] = "glGetMapdv";
	strings[267] = "glGetMapfv";
	strings[268] = "glGetMapiv";
	strings[269] = "glGetMaterialfv";
	strings[270] = "glGetMaterialiv";
	strings[271] = "glGetPixelMapfv";
	strings[272] = "glGetPixelMapuiv";
	strings[273] = "glGetPixelMapusv";
	strings[274] = "glGetPolygonStipple";
	strings[275] = "glGetString";
	strings[276] = "glGetTexEnvfv";
	strings[277] = "glGetTexEnviv";
	strings[278] = "glGetTexGendv";
	strings[279] = "glGetTexGenfv";
	strings[280] = "glGetTexGeniv";
	strings[281] = "glGetTexImage";
	strings[282] = "glGetTexParameterfv";
	strings[283] = "glGetTexParameteriv";
	strings[284] = "glGetTexLevelParameterfv";
	strings[285] = "glGetTexLevelParameteriv";
	strings[286] = "glIsEnabled";
	strings[287] = "glIsList";
	strings[288] = "glDepthRange";
	strings[289] = "glFrustum";
	strings[290] = "glLoadIdentity";
	strings[291] = "glLoadMatrixf";
	strings[292] = "glLoadMatrixd";
	strings[293] = "glMatrixMode";
	strings[294] = "glMultMatrixf";
	strings[295] = "glMultMatrixd";
	strings[296] = "glOrtho";
	strings[297] = "glPopMatrix";
	strings[298] = "glPushMatrix";
	strings[299] = "glRotated";
	strings[300] = "glRotatef";
	strings[301] = "glScaled";
	strings[302] = "glScalef";
	strings[303] = "glTranslated";
	strings[304] = "glTranslatef";
	strings[305] = "glViewport";
	strings[306] = "glArrayElement";
	strings[308] = "glColorPointer";
	strings[309] = "glDisableClientState";
	strings[310] = "glDrawArrays";
	strings[311] = "glDrawElements";
	strings[312] = "glEdgeFlagPointer";
	strings[313] = "glEnableClientState";
	strings[329] = "glGetPointerv";
	strings[314] = "glIndexPointer";
	strings[317] = "glInterleavedArrays";
	strings[318] = "glNormalPointer";
	strings[320] = "glTexCoordPointer";
	strings[321] = "glVertexPointer";
	strings[319] = "glPolygonOffset";
	strings[323] = "glCopyTexImage1D";
	strings[324] = "glCopyTexImage2D";
	strings[325] = "glCopyTexSubImage1D";
	strings[326] = "glCopyTexSubImage2D";
	strings[332] = "glTexSubImage1D";
	strings[333] = "glTexSubImage2D";
	strings[322] = "glAreTexturesResident";
	strings[307] = "glBindTexture";
	strings[327] = "glDeleteTextures";
	strings[328] = "glGenTextures";
	strings[330] = "glIsTexture";
	strings[331] = "glPrioritizeTextures";
	strings[315] = "glIndexub";
	strings[316] = "glIndexubv";
	strings[334] = "glPopClientAttrib";
	strings[335] = "glPushClientAttrib";
	strings[336] = "glBlendColor";
	strings[337] = "glBlendEquation";
	strings[338] = "glDrawRangeElements";
	strings[339] = "glColorTable";
	strings[340] = "glColorTableParameterfv";
	strings[341] = "glColorTableParameteriv";
	strings[342] = "glCopyColorTable";
	strings[343] = "glGetColorTable";
	strings[344] = "glGetColorTableParameterfv";
	strings[345] = "glGetColorTableParameteriv";
	strings[346] = "glColorSubTable";
	strings[347] = "glCopyColorSubTable";
	strings[348] = "glConvolutionFilter1D";
	strings[349] = "glConvolutionFilter2D";
	strings[350] = "glConvolutionParameterf";
	strings[351] = "glConvolutionParameterfv";
	strings[352] = "glConvolutionParameteri";
	strings[353] = "glConvolutionParameteriv";
	strings[354] = "glCopyConvolutionFilter1D";
	strings[355] = "glCopyConvolutionFilter2D";
	strings[356] = "glGetConvolutionFilter";
	strings[357] = "glGetConvolutionParameterfv";
	strings[358] = "glGetConvolutionParameteriv";
	strings[359] = "glGetSeparableFilter";
	strings[360] = "glSeparableFilter2D";
	strings[361] = "glGetHistogram";
	strings[362] = "glGetHistogramParameterfv";
	strings[363] = "glGetHistogramParameteriv";
	strings[364] = "glGetMinmax";
	strings[365] = "glGetMinmaxParameterfv";
	strings[366] = "glGetMinmaxParameteriv";
	strings[367] = "glHistogram";
	strings[368] = "glMinmax";
	strings[369] = "glResetHistogram";
	strings[370] = "glResetMinmax";
	strings[371] = "glTexImage3D";
	strings[372] = "glTexSubImage3D";
	strings[373] = "glCopyTexSubImage3D";
	strings[374] = "glActiveTexture";
	strings[375] = "glClientActiveTexture";
	strings[376] = "glMultiTexCoord1d";
	strings[377] = "glMultiTexCoord1dv";
	strings[378] = "glMultiTexCoord1f";
	strings[379] = "glMultiTexCoord1fv";
	strings[380] = "glMultiTexCoord1i";
	strings[381] = "glMultiTexCoord1iv";
	strings[382] = "glMultiTexCoord1s";
	strings[383] = "glMultiTexCoord1sv";
	strings[384] = "glMultiTexCoord2d";
	strings[385] = "glMultiTexCoord2dv";
	strings[386] = "glMultiTexCoord2f";
	strings[387] = "glMultiTexCoord2fv";
	strings[388] = "glMultiTexCoord2i";
	strings[389] = "glMultiTexCoord2iv";
	strings[390] = "glMultiTexCoord2s";
	strings[391] = "glMultiTexCoord2sv";
	strings[392] = "glMultiTexCoord3d";
	strings[393] = "glMultiTexCoord3dv";
	strings[394] = "glMultiTexCoord3f";
	strings[395] = "glMultiTexCoord3fv";
	strings[396] = "glMultiTexCoord3i";
	strings[397] = "glMultiTexCoord3iv";
	strings[398] = "glMultiTexCoord3s";
	strings[399] = "glMultiTexCoord3sv";
	strings[400] = "glMultiTexCoord4d";
	strings[401] = "glMultiTexCoord4dv";
	strings[402] = "glMultiTexCoord4f";
	strings[403] = "glMultiTexCoord4fv";
	strings[404] = "glMultiTexCoord4i";
	strings[405] = "glMultiTexCoord4iv";
	strings[406] = "glMultiTexCoord4s";
	strings[407] = "glMultiTexCoord4sv";
	strings[408] = "glLoadTransposeMatrixf";
	strings[409] = "glLoadTransposeMatrixd";
	strings[410] = "glMultTransposeMatrixf";
	strings[411] = "glMultTransposeMatrixd";
	strings[412] = "glSampleCoverage";
	strings[413] = "glCompressedTexImage3D";
	strings[414] = "glCompressedTexImage2D";
	strings[415] = "glCompressedTexImage1D";
	strings[416] = "glCompressedTexSubImage3D";
	strings[417] = "glCompressedTexSubImage2D";
	strings[418] = "glCompressedTexSubImage1D";
	strings[419] = "glGetCompressedTexImage";
	strings[420] = "glBlendFuncSeparate";
	strings[421] = "glFogCoordf";
	strings[422] = "glFogCoordfv";
	strings[423] = "glFogCoordd";
	strings[424] = "glFogCoorddv";
	strings[425] = "glFogCoordPointer";
	strings[426] = "glMultiDrawArrays";
	strings[427] = "glMultiDrawElements";
	strings[428] = "glPointParameterf";
	strings[429] = "glPointParameterfv";
	strings[430] = "glPointParameteri";
	strings[431] = "glPointParameteriv";
	strings[432] = "glSecondaryColor3b";
	strings[433] = "glSecondaryColor3bv";
	strings[434] = "glSecondaryColor3d";
	strings[435] = "glSecondaryColor3dv";
	strings[436] = "glSecondaryColor3f";
	strings[437] = "glSecondaryColor3fv";
	strings[438] = "glSecondaryColor3i";
	strings[439] = "glSecondaryColor3iv";
	strings[440] = "glSecondaryColor3s";
	strings[441] = "glSecondaryColor3sv";
	strings[442] = "glSecondaryColor3ub";
	strings[443] = "glSecondaryColor3ubv";
	strings[444] = "glSecondaryColor3ui";
	strings[445] = "glSecondaryColor3uiv";
	strings[446] = "glSecondaryColor3us";
	strings[447] = "glSecondaryColor3usv";
	strings[448] = "glSecondaryColorPointer";
	strings[449] = "glWindowPos2d";
	strings[450] = "glWindowPos2dv";
	strings[451] = "glWindowPos2f";
	strings[452] = "glWindowPos2fv";
	strings[453] = "glWindowPos2i";
	strings[454] = "glWindowPos2iv";
	strings[455] = "glWindowPos2s";
	strings[456] = "glWindowPos2sv";
	strings[457] = "glWindowPos3d";
	strings[458] = "glWindowPos3dv";
	strings[459] = "glWindowPos3f";
	strings[460] = "glWindowPos3fv";
	strings[461] = "glWindowPos3i";
	strings[462] = "glWindowPos3iv";
	strings[463] = "glWindowPos3s";
	strings[464] = "glWindowPos3sv";
	strings[465] = "glBindBuffer";
	strings[466] = "glBufferData";
	strings[467] = "glBufferSubData";
	strings[468] = "glDeleteBuffers";
	strings[469] = "glGenBuffers";
	strings[470] = "glGetBufferParameteriv";
	strings[471] = "glGetBufferPointerv";
	strings[472] = "glGetBufferSubData";
	strings[473] = "glIsBuffer";
	strings[474] = "glMapBuffer";
	strings[475] = "glUnmapBuffer";
	strings[476] = "glGenQueries";
	strings[477] = "glDeleteQueries";
	strings[478] = "glIsQuery";
	strings[479] = "glBeginQuery";
	strings[480] = "glEndQuery";
	strings[481] = "glGetQueryiv";
	strings[482] = "glGetQueryObjectiv";
	strings[483] = "glGetQueryObjectuiv";
	strings[484] = "glBlendEquationSeparate";
	strings[485] = "glDrawBuffers";
	strings[486] = "glStencilFuncSeparate";
	strings[487] = "glStencilOpSeparate";
	strings[488] = "glStencilMaskSeparate";
	strings[489] = "glAttachShader";
	strings[490] = "glBindAttribLocation";
	strings[491] = "glCompileShader";
	strings[492] = "glCreateProgram";
	strings[493] = "glCreateShader";
	strings[494] = "glDeleteProgram";
	strings[495] = "glDeleteShader";
	strings[496] = "glDetachShader";
	strings[497] = "glDisableVertexAttribArray";
	strings[498] = "glEnableVertexAttribArray";
	strings[499] = "glGetActiveAttrib";
	strings[500] = "glGetActiveUniform";
	strings[501] = "glGetAttachedShaders";
	strings[502] = "glGetAttribLocation";
	strings[503] = "glGetProgramiv";
	strings[504] = "glGetProgramInfoLog";
	strings[505] = "glGetShaderiv";
	strings[506] = "glGetShaderInfoLog";
	strings[507] = "glGetShaderSource";
	strings[508] = "glGetUniformLocation";
	strings[509] = "glGetUniformfv";
	strings[510] = "glGetUniformiv";
	strings[511] = "glGetVertexAttribdv";
	strings[512] = "glGetVertexAttribfv";
	strings[513] = "glGetVertexAttribiv";
	strings[514] = "glGetVertexAttribPointerv";
	strings[515] = "glIsProgram";
	strings[516] = "glIsShader";
	strings[517] = "glLinkProgram";
	strings[518] = "glShaderSource";
	strings[519] = "glUseProgram";
	strings[520] = "glUniform1f";
	strings[521] = "glUniform2f";
	strings[522] = "glUniform3f";
	strings[523] = "glUniform4f";
	strings[524] = "glUniform1i";
	strings[525] = "glUniform2i";
	strings[526] = "glUniform3i";
	strings[527] = "glUniform4i";
	strings[528] = "glUniform1fv";
	strings[529] = "glUniform2fv";
	strings[530] = "glUniform3fv";
	strings[531] = "glUniform4fv";
	strings[532] = "glUniform1iv";
	strings[533] = "glUniform2iv";
	strings[534] = "glUniform3iv";
	strings[535] = "glUniform4iv";
	strings[536] = "glUniformMatrix2fv";
	strings[537] = "glUniformMatrix3fv";
	strings[538] = "glUniformMatrix4fv";
	strings[539] = "glValidateProgram";
	strings[540] = "glVertexAttrib1d";
	strings[541] = "glVertexAttrib1dv";
	strings[542] = "glVertexAttrib1f";
	strings[543] = "glVertexAttrib1fv";
	strings[544] = "glVertexAttrib1s";
	strings[545] = "glVertexAttrib1sv";
	strings[546] = "glVertexAttrib2d";
	strings[547] = "glVertexAttrib2dv";
	strings[548] = "glVertexAttrib2f";
	strings[549] = "glVertexAttrib2fv";
	strings[550] = "glVertexAttrib2s";
	strings[551] = "glVertexAttrib2sv";
	strings[552] = "glVertexAttrib3d";
	strings[553] = "glVertexAttrib3dv";
	strings[554] = "glVertexAttrib3f";
	strings[555] = "glVertexAttrib3fv";
	strings[556] = "glVertexAttrib3s";
	strings[557] = "glVertexAttrib3sv";
	strings[558] = "glVertexAttrib4Nbv";
	strings[559] = "glVertexAttrib4Niv";
	strings[560] = "glVertexAttrib4Nsv";
	strings[561] = "glVertexAttrib4Nub";
	strings[562] = "glVertexAttrib4Nubv";
	strings[563] = "glVertexAttrib4Nuiv";
	strings[564] = "glVertexAttrib4Nusv";
	strings[565] = "glVertexAttrib4bv";
	strings[566] = "glVertexAttrib4d";
	strings[567] = "glVertexAttrib4dv";
	strings[568] = "glVertexAttrib4f";
	strings[569] = "glVertexAttrib4fv";
	strings[570] = "glVertexAttrib4iv";
	strings[571] = "glVertexAttrib4s";
	strings[572] = "glVertexAttrib4sv";
	strings[573] = "glVertexAttrib4ubv";
	strings[574] = "glVertexAttrib4uiv";
	strings[575] = "glVertexAttrib4usv";
	strings[576] = "glVertexAttribPointer";
	strings[577] = "glUniformMatrix2x3fv";
	strings[578] = "glUniformMatrix3x2fv";
	strings[579] = "glUniformMatrix2x4fv";
	strings[580] = "glUniformMatrix4x2fv";
	strings[581] = "glUniformMatrix3x4fv";
	strings[582] = "glUniformMatrix4x3fv";
	strings[374] = "glActiveTextureARB";
	strings[375] = "glClientActiveTextureARB";
	strings[376] = "glMultiTexCoord1dARB";
	strings[377] = "glMultiTexCoord1dvARB";
	strings[378] = "glMultiTexCoord1fARB";
	strings[379] = "glMultiTexCoord1fvARB";
	strings[380] = "glMultiTexCoord1iARB";
	strings[381] = "glMultiTexCoord1ivARB";
	strings[382] = "glMultiTexCoord1sARB";
	strings[383] = "glMultiTexCoord1svARB";
	strings[384] = "glMultiTexCoord2dARB";
	strings[385] = "glMultiTexCoord2dvARB";
	strings[386] = "glMultiTexCoord2fARB";
	strings[387] = "glMultiTexCoord2fvARB";
	strings[388] = "glMultiTexCoord2iARB";
	strings[389] = "glMultiTexCoord2ivARB";
	strings[390] = "glMultiTexCoord2sARB";
	strings[391] = "glMultiTexCoord2svARB";
	strings[392] = "glMultiTexCoord3dARB";
	strings[393] = "glMultiTexCoord3dvARB";
	strings[394] = "glMultiTexCoord3fARB";
	strings[395] = "glMultiTexCoord3fvARB";
	strings[396] = "glMultiTexCoord3iARB";
	strings[397] = "glMultiTexCoord3ivARB";
	strings[398] = "glMultiTexCoord3sARB";
	strings[399] = "glMultiTexCoord3svARB";
	strings[400] = "glMultiTexCoord4dARB";
	strings[401] = "glMultiTexCoord4dvARB";
	strings[402] = "glMultiTexCoord4fARB";
	strings[403] = "glMultiTexCoord4fvARB";
	strings[404] = "glMultiTexCoord4iARB";
	strings[405] = "glMultiTexCoord4ivARB";
	strings[406] = "glMultiTexCoord4sARB";
	strings[407] = "glMultiTexCoord4svARB";
	strings[617] = "glLoadTransposeMatrixfARB";
	strings[618] = "glLoadTransposeMatrixdARB";
	strings[619] = "glMultTransposeMatrixfARB";
	strings[620] = "glMultTransposeMatrixdARB";
	strings[621] = "glSampleCoverageARB";
	strings[622] = "glCompressedTexImage3DARB";
	strings[623] = "glCompressedTexImage2DARB";
	strings[624] = "glCompressedTexImage1DARB";
	strings[625] = "glCompressedTexSubImage3DARB";
	strings[626] = "glCompressedTexSubImage2DARB";
	strings[627] = "glCompressedTexSubImage1DARB";
	strings[628] = "glGetCompressedTexImageARB";
	strings[629] = "glPointParameterfARB";
	strings[630] = "glPointParameterfvARB";
	strings[631] = "glWeightbvARB";
	strings[632] = "glWeightsvARB";
	strings[633] = "glWeightivARB";
	strings[634] = "glWeightfvARB";
	strings[635] = "glWeightdvARB";
	strings[636] = "glWeightubvARB";
	strings[637] = "glWeightusvARB";
	strings[638] = "glWeightuivARB";
	strings[639] = "glWeightPointerARB";
	strings[640] = "glVertexBlendARB";
	strings[641] = "glCurrentPaletteMatrixARB";
	strings[642] = "glMatrixIndexubvARB";
	strings[643] = "glMatrixIndexusvARB";
	strings[644] = "glMatrixIndexuivARB";
	strings[645] = "glMatrixIndexPointerARB";
	strings[646] = "glWindowPos2dARB";
	strings[647] = "glWindowPos2fARB";
	strings[648] = "glWindowPos2iARB";
	strings[649] = "glWindowPos2sARB";
	strings[650] = "glWindowPos2dvARB";
	strings[651] = "glWindowPos2fvARB";
	strings[652] = "glWindowPos2ivARB";
	strings[653] = "glWindowPos2svARB";
	strings[654] = "glWindowPos3dARB";
	strings[655] = "glWindowPos3fARB";
	strings[656] = "glWindowPos3iARB";
	strings[657] = "glWindowPos3sARB";
	strings[658] = "glWindowPos3dvARB";
	strings[659] = "glWindowPos3fvARB";
	strings[660] = "glWindowPos3ivARB";
	strings[661] = "glWindowPos3svARB";
	strings[662] = "glGetVertexAttribdvARB";
	strings[663] = "glGetVertexAttribfvARB";
	strings[664] = "glGetVertexAttribivARB";
	strings[665] = "glVertexAttrib1dARB";
	strings[666] = "glVertexAttrib1dvARB";
	strings[667] = "glVertexAttrib1fARB";
	strings[668] = "glVertexAttrib1fvARB";
	strings[669] = "glVertexAttrib1sARB";
	strings[670] = "glVertexAttrib1svARB";
	strings[671] = "glVertexAttrib2dARB";
	strings[672] = "glVertexAttrib2dvARB";
	strings[673] = "glVertexAttrib2fARB";
	strings[674] = "glVertexAttrib2fvARB";
	strings[675] = "glVertexAttrib2sARB";
	strings[676] = "glVertexAttrib2svARB";
	strings[677] = "glVertexAttrib3dARB";
	strings[678] = "glVertexAttrib3dvARB";
	strings[679] = "glVertexAttrib3fARB";
	strings[680] = "glVertexAttrib3fvARB";
	strings[681] = "glVertexAttrib3sARB";
	strings[682] = "glVertexAttrib3svARB";
	strings[683] = "glVertexAttrib4dARB";
	strings[684] = "glVertexAttrib4dvARB";
	strings[685] = "glVertexAttrib4fARB";
	strings[686] = "glVertexAttrib4fvARB";
	strings[687] = "glVertexAttrib4sARB";
	strings[688] = "glVertexAttrib4svARB";
	strings[689] = "glVertexAttrib4NubARB";
	strings[690] = "glVertexAttrib4NubvARB";
	strings[691] = "glVertexAttrib4bvARB";
	strings[692] = "glVertexAttrib4ivARB";
	strings[693] = "glVertexAttrib4ubvARB";
	strings[694] = "glVertexAttrib4usvARB";
	strings[695] = "glVertexAttrib4uivARB";
	strings[696] = "glVertexAttrib4NbvARB";
	strings[697] = "glVertexAttrib4NsvARB";
	strings[698] = "glVertexAttrib4NivARB";
	strings[699] = "glVertexAttrib4NusvARB";
	strings[700] = "glVertexAttrib4NuivARB";
	strings[701] = "glVertexAttribPointerARB";
	strings[702] = "glEnableVertexAttribArrayARB";
	strings[703] = "glDisableVertexAttribArrayARB";
	strings[704] = "glProgramStringARB";
	strings[705] = "glBindProgramARB";
	strings[706] = "glDeleteProgramsARB";
	strings[707] = "glGenProgramsARB";
	strings[708] = "glIsProgramARB";
	strings[709] = "glProgramEnvParameter4dARB";
	strings[710] = "glProgramEnvParameter4dvARB";
	strings[711] = "glProgramEnvParameter4fARB";
	strings[712] = "glProgramEnvParameter4fvARB";
	strings[713] = "glProgramLocalParameter4dARB";
	strings[714] = "glProgramLocalParameter4dvARB";
	strings[715] = "glProgramLocalParameter4fARB";
	strings[716] = "glProgramLocalParameter4fvARB";
	strings[717] = "glGetProgramEnvParameterdvARB";
	strings[718] = "glGetProgramEnvParameterfvARB";
	strings[719] = "glGetProgramLocalParameterdvARB";
	strings[720] = "glGetProgramLocalParameterfvARB";
	strings[721] = "glGetProgramivARB";
	strings[722] = "glGetProgramStringARB";
	strings[723] = "glGetVertexAttribPointervARB";
	strings[724] = "glBindBufferARB";
	strings[725] = "glBufferDataARB";
	strings[726] = "glBufferSubDataARB";
	strings[727] = "glDeleteBuffersARB";
	strings[728] = "glGenBuffersARB";
	strings[729] = "glGetBufferParameterivARB";
	strings[730] = "glGetBufferPointervARB";
	strings[731] = "glGetBufferSubDataARB";
	strings[732] = "glIsBufferARB";
	strings[733] = "glMapBufferARB";
	strings[734] = "glUnmapBufferARB";
	strings[735] = "glGenQueriesARB";
	strings[736] = "glDeleteQueriesARB";
	strings[737] = "glIsQueryARB";
	strings[738] = "glBeginQueryARB";
	strings[739] = "glEndQueryARB";
	strings[740] = "glGetQueryivARB";
	strings[741] = "glGetQueryObjectivARB";
	strings[742] = "glGetQueryObjectuivARB";
	strings[743] = "glDeleteObjectARB";
	strings[744] = "glGetHandleARB";
	strings[745] = "glDetachObjectARB";
	strings[746] = "glCreateShaderObjectARB";
	strings[747] = "glShaderSourceARB";
	strings[748] = "glCompileShaderARB";
	strings[749] = "glCreateProgramObjectARB";
	strings[750] = "glAttachObjectARB";
	strings[751] = "glLinkProgramARB";
	strings[752] = "glUseProgramObjectARB";
	strings[753] = "glValidateProgramARB";
	strings[754] = "glUniform1fARB";
	strings[755] = "glUniform2fARB";
	strings[756] = "glUniform3fARB";
	strings[757] = "glUniform4fARB";
	strings[758] = "glUniform1iARB";
	strings[759] = "glUniform2iARB";
	strings[760] = "glUniform3iARB";
	strings[761] = "glUniform4iARB";
	strings[762] = "glUniform1fvARB";
	strings[763] = "glUniform2fvARB";
	strings[764] = "glUniform3fvARB";
	strings[765] = "glUniform4fvARB";
	strings[766] = "glUniform1ivARB";
	strings[767] = "glUniform2ivARB";
	strings[768] = "glUniform3ivARB";
	strings[769] = "glUniform4ivARB";
	strings[770] = "glUniformMatrix2fvARB";
	strings[771] = "glUniformMatrix3fvARB";
	strings[772] = "glUniformMatrix4fvARB";
	strings[773] = "glGetObjectParameterfvARB";
	strings[774] = "glGetObjectParameterivARB";
	strings[775] = "glGetInfoLogARB";
	strings[776] = "glGetAttachedObjectsARB";
	strings[777] = "glGetUniformLocationARB";
	strings[778] = "glGetActiveUniformARB";
	strings[779] = "glGetUniformfvARB";
	strings[780] = "glGetUniformivARB";
	strings[781] = "glGetShaderSourceARB";
	strings[782] = "glBindAttribLocationARB";
	strings[783] = "glGetActiveAttribARB";
	strings[784] = "glGetAttribLocationARB";
	strings[785] = "glDrawBuffersARB";
	strings[786] = "glBlendColorEXT";
	strings[787] = "glPolygonOffsetEXT";
	strings[788] = "glTexImage3DEXT";
	strings[789] = "glTexSubImage3DEXT";
	strings[790] = "glGetTexFilterFuncSGIS";
	strings[791] = "glTexFilterFuncSGIS";
	strings[792] = "glTexSubImage1DEXT";
	strings[793] = "glTexSubImage2DEXT";
	strings[794] = "glCopyTexImage1DEXT";
	strings[795] = "glCopyTexImage2DEXT";
	strings[796] = "glCopyTexSubImage1DEXT";
	strings[797] = "glCopyTexSubImage2DEXT";
	strings[798] = "glCopyTexSubImage3DEXT";
	strings[799] = "glGetHistogramEXT";
	strings[800] = "glGetHistogramParameterfvEXT";
	strings[801] = "glGetHistogramParameterivEXT";
	strings[802] = "glGetMinmaxEXT";
	strings[803] = "glGetMinmaxParameterfvEXT";
	strings[804] = "glGetMinmaxParameterivEXT";
	strings[805] = "glHistogramEXT";
	strings[806] = "glMinmaxEXT";
	strings[807] = "glResetHistogramEXT";
	strings[808] = "glResetMinmaxEXT";
	strings[809] = "glConvolutionFilter1DEXT";
	strings[810] = "glConvolutionFilter2DEXT";
	strings[811] = "glConvolutionParameterfEXT";
	strings[812] = "glConvolutionParameterfvEXT";
	strings[813] = "glConvolutionParameteriEXT";
	strings[814] = "glConvolutionParameterivEXT";
	strings[815] = "glCopyConvolutionFilter1DEXT";
	strings[816] = "glCopyConvolutionFilter2DEXT";
	strings[817] = "glGetConvolutionFilterEXT";
	strings[818] = "glGetConvolutionParameterfvEXT";
	strings[819] = "glGetConvolutionParameterivEXT";
	strings[820] = "glGetSeparableFilterEXT";
	strings[821] = "glSeparableFilter2DEXT";
	strings[822] = "glColorTableSGI";
	strings[823] = "glColorTableParameterfvSGI";
	strings[824] = "glColorTableParameterivSGI";
	strings[825] = "glCopyColorTableSGI";
	strings[826] = "glGetColorTableSGI";
	strings[827] = "glGetColorTableParameterfvSGI";
	strings[828] = "glGetColorTableParameterivSGI";
	strings[829] = "glPixelTexGenParameteriSGIS";
	strings[830] = "glPixelTexGenParameterivSGIS";
	strings[831] = "glPixelTexGenParameterfSGIS";
	strings[832] = "glPixelTexGenParameterfvSGIS";
	strings[833] = "glGetPixelTexGenParameterivSGIS";
	strings[834] = "glGetPixelTexGenParameterfvSGIS";
	strings[835] = "glTexImage4DSGIS";
	strings[836] = "glTexSubImage4DSGIS";
	strings[837] = "glAreTexturesResidentEXT";
	strings[838] = "glBindTextureEXT";
	strings[839] = "glDeleteTexturesEXT";
	strings[840] = "glGenTexturesEXT";
	strings[841] = "glIsTextureEXT";
	strings[842] = "glPrioritizeTexturesEXT";
	strings[843] = "glDetailTexFuncSGIS";
	strings[844] = "glGetDetailTexFuncSGIS";
	strings[845] = "glSharpenTexFuncSGIS";
	strings[846] = "glGetSharpenTexFuncSGIS";
	strings[847] = "glSampleMaskSGIS";
	strings[848] = "glSamplePatternSGIS";
	strings[849] = "glArrayElementEXT";
	strings[850] = "glColorPointerEXT";
	strings[851] = "glDrawArraysEXT";
	strings[852] = "glEdgeFlagPointerEXT";
	strings[853] = "glGetPointervEXT";
	strings[854] = "glIndexPointerEXT";
	strings[855] = "glNormalPointerEXT";
	strings[856] = "glTexCoordPointerEXT";
	strings[857] = "glVertexPointerEXT";
	strings[858] = "glBlendEquationEXT";
	strings[859] = "glSpriteParameterfSGIX";
	strings[860] = "glSpriteParameterfvSGIX";
	strings[861] = "glSpriteParameteriSGIX";
	strings[862] = "glSpriteParameterivSGIX";
	strings[863] = "glPointParameterfEXT";
	strings[864] = "glPointParameterfvEXT";
	strings[865] = "glGetInstrumentsSGIX";
	strings[866] = "glInstrumentsBufferSGIX";
	strings[867] = "glPollInstrumentsSGIX";
	strings[868] = "glReadInstrumentsSGIX";
	strings[869] = "glStartInstrumentsSGIX";
	strings[870] = "glStopInstrumentsSGIX";
	strings[871] = "glFrameZoomSGIX";
	strings[872] = "glTagSampleBufferSGIX";
	strings[873] = "glReferencePlaneSGIX";
	strings[874] = "glFlushRasterSGIX";
	strings[875] = "glFogFuncSGIS";
	strings[876] = "glGetFogFuncSGIS";
	strings[877] = "glImageTransformParameteriHP";
	strings[878] = "glImageTransformParameterfHP";
	strings[879] = "glImageTransformParameterivHP";
	strings[880] = "glImageTransformParameterfvHP";
	strings[881] = "glGetImageTransformParameterivHP";
	strings[882] = "glGetImageTransformParameterfvHP";
	strings[883] = "glColorSubTableEXT";
	strings[884] = "glCopyColorSubTableEXT";
	strings[885] = "glHintPGI";
	strings[886] = "glColorTableEXT";
	strings[887] = "glGetColorTableEXT";
	strings[888] = "glGetColorTableParameterivEXT";
	strings[889] = "glGetColorTableParameterfvEXT";
	strings[890] = "glGetListParameterfvSGIX";
	strings[891] = "glGetListParameterivSGIX";
	strings[892] = "glListParameterfSGIX";
	strings[893] = "glListParameterfvSGIX";
	strings[894] = "glListParameteriSGIX";
	strings[895] = "glListParameterivSGIX";
	strings[896] = "glIndexMaterialEXT";
	strings[897] = "glIndexFuncEXT";
	strings[898] = "glLockArraysEXT";
	strings[899] = "glUnlockArraysEXT";
	strings[900] = "glCullParameterdvEXT";
	strings[901] = "glCullParameterfvEXT";
	strings[902] = "glFragmentColorMaterialSGIX";
	strings[903] = "glFragmentLightfSGIX";
	strings[904] = "glFragmentLightfvSGIX";
	strings[905] = "glFragmentLightiSGIX";
	strings[906] = "glFragmentLightivSGIX";
	strings[907] = "glFragmentLightModelfSGIX";
	strings[908] = "glFragmentLightModelfvSGIX";
	strings[909] = "glFragmentLightModeliSGIX";
	strings[910] = "glFragmentLightModelivSGIX";
	strings[911] = "glFragmentMaterialfSGIX";
	strings[912] = "glFragmentMaterialfvSGIX";
	strings[913] = "glFragmentMaterialiSGIX";
	strings[914] = "glFragmentMaterialivSGIX";
	strings[915] = "glGetFragmentLightfvSGIX";
	strings[916] = "glGetFragmentLightivSGIX";
	strings[917] = "glGetFragmentMaterialfvSGIX";
	strings[918] = "glGetFragmentMaterialivSGIX";
	strings[919] = "glLightEnviSGIX";
	strings[920] = "glDrawRangeElementsEXT";
	strings[921] = "glApplyTextureEXT";
	strings[922] = "glTextureLightEXT";
	strings[923] = "glTextureMaterialEXT";
	strings[924] = "glAsyncMarkerSGIX";
	strings[925] = "glFinishAsyncSGIX";
	strings[926] = "glPollAsyncSGIX";
	strings[927] = "glGenAsyncMarkersSGIX";
	strings[928] = "glDeleteAsyncMarkersSGIX";
	strings[929] = "glIsAsyncMarkerSGIX";
	strings[930] = "glVertexPointervINTEL";
	strings[931] = "glNormalPointervINTEL";
	strings[932] = "glColorPointervINTEL";
	strings[933] = "glTexCoordPointervINTEL";
	strings[934] = "glPixelTransformParameteriEXT";
	strings[935] = "glPixelTransformParameterfEXT";
	strings[936] = "glPixelTransformParameterivEXT";
	strings[937] = "glPixelTransformParameterfvEXT";
	strings[938] = "glSecondaryColor3bEXT";
	strings[939] = "glSecondaryColor3bvEXT";
	strings[940] = "glSecondaryColor3dEXT";
	strings[941] = "glSecondaryColor3dvEXT";
	strings[942] = "glSecondaryColor3fEXT";
	strings[943] = "glSecondaryColor3fvEXT";
	strings[944] = "glSecondaryColor3iEXT";
	strings[945] = "glSecondaryColor3ivEXT";
	strings[946] = "glSecondaryColor3sEXT";
	strings[947] = "glSecondaryColor3svEXT";
	strings[948] = "glSecondaryColor3ubEXT";
	strings[949] = "glSecondaryColor3ubvEXT";
	strings[950] = "glSecondaryColor3uiEXT";
	strings[951] = "glSecondaryColor3uivEXT";
	strings[952] = "glSecondaryColor3usEXT";
	strings[953] = "glSecondaryColor3usvEXT";
	strings[954] = "glSecondaryColorPointerEXT";
	strings[955] = "glTextureNormalEXT";
	strings[956] = "glMultiDrawArraysEXT";
	strings[957] = "glMultiDrawElementsEXT";
	strings[958] = "glFogCoordfEXT";
	strings[959] = "glFogCoordfvEXT";
	strings[960] = "glFogCoorddEXT";
	strings[961] = "glFogCoorddvEXT";
	strings[962] = "glFogCoordPointerEXT";
	strings[963] = "glTangent3bEXT";
	strings[964] = "glTangent3bvEXT";
	strings[965] = "glTangent3dEXT";
	strings[966] = "glTangent3dvEXT";
	strings[967] = "glTangent3fEXT";
	strings[968] = "glTangent3fvEXT";
	strings[969] = "glTangent3iEXT";
	strings[970] = "glTangent3ivEXT";
	strings[971] = "glTangent3sEXT";
	strings[972] = "glTangent3svEXT";
	strings[973] = "glBinormal3bEXT";
	strings[974] = "glBinormal3bvEXT";
	strings[975] = "glBinormal3dEXT";
	strings[976] = "glBinormal3dvEXT";
	strings[977] = "glBinormal3fEXT";
	strings[978] = "glBinormal3fvEXT";
	strings[979] = "glBinormal3iEXT";
	strings[980] = "glBinormal3ivEXT";
	strings[981] = "glBinormal3sEXT";
	strings[982] = "glBinormal3svEXT";
	strings[983] = "glTangentPointerEXT";
	strings[984] = "glBinormalPointerEXT";
	strings[985] = "glPixelTexGenSGIX";
	strings[986] = "glFinishTextureSUNX";
	strings[987] = "glGlobalAlphaFactorbSUN";
	strings[988] = "glGlobalAlphaFactorsSUN";
	strings[989] = "glGlobalAlphaFactoriSUN";
	strings[990] = "glGlobalAlphaFactorfSUN";
	strings[991] = "glGlobalAlphaFactordSUN";
	strings[992] = "glGlobalAlphaFactorubSUN";
	strings[993] = "glGlobalAlphaFactorusSUN";
	strings[994] = "glGlobalAlphaFactoruiSUN";
	strings[995] = "glReplacementCodeuiSUN";
	strings[996] = "glReplacementCodeusSUN";
	strings[997] = "glReplacementCodeubSUN";
	strings[998] = "glReplacementCodeuivSUN";
	strings[999] = "glReplacementCodeusvSUN";
	strings[1000] = "glReplacementCodeubvSUN";
	strings[1001] = "glReplacementCodePointerSUN";
	strings[1002] = "glColor4ubVertex2fSUN";
	strings[1003] = "glColor4ubVertex2fvSUN";
	strings[1004] = "glColor4ubVertex3fSUN";
	strings[1005] = "glColor4ubVertex3fvSUN";
	strings[1006] = "glColor3fVertex3fSUN";
	strings[1007] = "glColor3fVertex3fvSUN";
	strings[1008] = "glNormal3fVertex3fSUN";
	strings[1009] = "glNormal3fVertex3fvSUN";
	strings[1010] = "glColor4fNormal3fVertex3fSUN";
	strings[1011] = "glColor4fNormal3fVertex3fvSUN";
	strings[1012] = "glTexCoord2fVertex3fSUN";
	strings[1013] = "glTexCoord2fVertex3fvSUN";
	strings[1014] = "glTexCoord4fVertex4fSUN";
	strings[1015] = "glTexCoord4fVertex4fvSUN";
	strings[1016] = "glTexCoord2fColor4ubVertex3fSUN";
	strings[1017] = "glTexCoord2fColor4ubVertex3fvSUN";
	strings[1018] = "glTexCoord2fColor3fVertex3fSUN";
	strings[1019] = "glTexCoord2fColor3fVertex3fvSUN";
	strings[1020] = "glTexCoord2fNormal3fVertex3fSUN";
	strings[1021] = "glTexCoord2fNormal3fVertex3fvSUN";
	strings[1022] = "glTexCoord2fColor4fNormal3fVertex3fSUN";
	strings[1023] = "glTexCoord2fColor4fNormal3fVertex3fvSUN";
	strings[1024] = "glTexCoord4fColor4fNormal3fVertex4fSUN";
	strings[1025] = "glTexCoord4fColor4fNormal3fVertex4fvSUN";
	strings[1026] = "glReplacementCodeuiVertex3fSUN";
	strings[1027] = "glReplacementCodeuiVertex3fvSUN";
	strings[1028] = "glReplacementCodeuiColor4ubVertex3fSUN";
	strings[1029] = "glReplacementCodeuiColor4ubVertex3fvSUN";
	strings[1030] = "glReplacementCodeuiColor3fVertex3fSUN";
	strings[1031] = "glReplacementCodeuiColor3fVertex3fvSUN";
	strings[1032] = "glReplacementCodeuiNormal3fVertex3fSUN";
	strings[1033] = "glReplacementCodeuiNormal3fVertex3fvSUN";
	strings[1034] = "glReplacementCodeuiColor4fNormal3fVertex3fSUN";
	strings[1035] = "glReplacementCodeuiColor4fNormal3fVertex3fvSUN";
	strings[1036] = "glReplacementCodeuiTexCoord2fVertex3fSUN";
	strings[1037] = "glReplacementCodeuiTexCoord2fVertex3fvSUN";
	strings[1038] = "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN";
	strings[1039] = "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN";
	strings[1040] = "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN";
	strings[1041] = "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN";
	strings[1042] = "glBlendFuncSeparateEXT";
	strings[1043] = "glVertexWeightfEXT";
	strings[1044] = "glVertexWeightfvEXT";
	strings[1045] = "glVertexWeightPointerEXT";
	strings[1046] = "glFlushVertexArrayRangeNV";
	strings[1047] = "glVertexArrayRangeNV";
	strings[1048] = "glCombinerParameterfvNV";
	strings[1049] = "glCombinerParameterfNV";
	strings[1050] = "glCombinerParameterivNV";
	strings[1051] = "glCombinerParameteriNV";
	strings[1052] = "glCombinerInputNV";
	strings[1053] = "glCombinerOutputNV";
	strings[1054] = "glFinalCombinerInputNV";
	strings[1055] = "glGetCombinerInputParameterfvNV";
	strings[1056] = "glGetCombinerInputParameterivNV";
	strings[1057] = "glGetCombinerOutputParameterfvNV";
	strings[1058] = "glGetCombinerOutputParameterivNV";
	strings[1059] = "glGetFinalCombinerInputParameterfvNV";
	strings[1060] = "glGetFinalCombinerInputParameterivNV";
	strings[1061] = "glResizeBuffersMESA";
	strings[1062] = "glWindowPos2dMESA";
	strings[1063] = "glWindowPos2dvMESA";
	strings[1064] = "glWindowPos2fMESA";
	strings[1065] = "glWindowPos2fvMESA";
	strings[1066] = "glWindowPos2iMESA";
	strings[1067] = "glWindowPos2ivMESA";
	strings[1068] = "glWindowPos2sMESA";
	strings[1069] = "glWindowPos2svMESA";
	strings[1070] = "glWindowPos3dMESA";
	strings[1071] = "glWindowPos3dvMESA";
	strings[1072] = "glWindowPos3fMESA";
	strings[1073] = "glWindowPos3fvMESA";
	strings[1074] = "glWindowPos3iMESA";
	strings[1075] = "glWindowPos3ivMESA";
	strings[1076] = "glWindowPos3sMESA";
	strings[1077] = "glWindowPos3svMESA";
	strings[1078] = "glWindowPos4dMESA";
	strings[1079] = "glWindowPos4dvMESA";
	strings[1080] = "glWindowPos4fMESA";
	strings[1081] = "glWindowPos4fvMESA";
	strings[1082] = "glWindowPos4iMESA";
	strings[1083] = "glWindowPos4ivMESA";
	strings[1084] = "glWindowPos4sMESA";
	strings[1085] = "glWindowPos4svMESA";
	strings[1086] = "glMultiModeDrawArraysIBM";
	strings[1087] = "glMultiModeDrawElementsIBM";
	strings[1088] = "glColorPointerListIBM";
	strings[1089] = "glSecondaryColorPointerListIBM";
	strings[1090] = "glEdgeFlagPointerListIBM";
	strings[1091] = "glFogCoordPointerListIBM";
	strings[1092] = "glIndexPointerListIBM";
	strings[1093] = "glNormalPointerListIBM";
	strings[1094] = "glTexCoordPointerListIBM";
	strings[1095] = "glVertexPointerListIBM";
	strings[1096] = "glTbufferMask3DFX";
	strings[1097] = "glSampleMaskEXT";
	strings[1098] = "glSamplePatternEXT";
	strings[1099] = "glTextureColorMaskSGIS";
	strings[1100] = "glDeleteFencesNV";
	strings[1101] = "glGenFencesNV";
	strings[1102] = "glIsFenceNV";
	strings[1103] = "glTestFenceNV";
	strings[1104] = "glGetFenceivNV";
	strings[1105] = "glFinishFenceNV";
	strings[1106] = "glSetFenceNV";
	strings[1107] = "glMapControlPointsNV";
	strings[1108] = "glMapParameterivNV";
	strings[1109] = "glMapParameterfvNV";
	strings[1110] = "glGetMapControlPointsNV";
	strings[1111] = "glGetMapParameterivNV";
	strings[1112] = "glGetMapParameterfvNV";
	strings[1113] = "glGetMapAttribParameterivNV";
	strings[1114] = "glGetMapAttribParameterfvNV";
	strings[1115] = "glEvalMapsNV";
	strings[1116] = "glCombinerStageParameterfvNV";
	strings[1117] = "glGetCombinerStageParameterfvNV";
	strings[1118] = "glAreProgramsResidentNV";
	strings[1119] = "glBindProgramNV";
	strings[1120] = "glDeleteProgramsNV";
	strings[1121] = "glExecuteProgramNV";
	strings[1122] = "glGenProgramsNV";
	strings[1123] = "glGetProgramParameterdvNV";
	strings[1124] = "glGetProgramParameterfvNV";
	strings[1125] = "glGetProgramivNV";
	strings[1126] = "glGetProgramStringNV";
	strings[1127] = "glGetTrackMatrixivNV";
	strings[1128] = "glGetVertexAttribdvNV";
	strings[1129] = "glGetVertexAttribfvNV";
	strings[1130] = "glGetVertexAttribivNV";
	strings[1131] = "glGetVertexAttribPointervNV";
	strings[1132] = "glIsProgramNV";
	strings[1133] = "glLoadProgramNV";
	strings[1134] = "glProgramParameter4dNV";
	strings[1135] = "glProgramParameter4dvNV";
	strings[1136] = "glProgramParameter4fNV";
	strings[1137] = "glProgramParameter4fvNV";
	strings[1138] = "glProgramParameters4dvNV";
	strings[1139] = "glProgramParameters4fvNV";
	strings[1140] = "glRequestResidentProgramsNV";
	strings[1141] = "glTrackMatrixNV";
	strings[1142] = "glVertexAttribPointerNV";
	strings[1143] = "glVertexAttrib1sNV";
	strings[1144] = "glVertexAttrib1svNV";
	strings[1145] = "glVertexAttrib2sNV";
	strings[1146] = "glVertexAttrib2svNV";
	strings[1147] = "glVertexAttrib3sNV";
	strings[1148] = "glVertexAttrib3svNV";
	strings[1149] = "glVertexAttrib4sNV";
	strings[1150] = "glVertexAttrib4svNV";
	strings[1151] = "glVertexAttrib1fNV";
	strings[1152] = "glVertexAttrib1fvNV";
	strings[1153] = "glVertexAttrib2fNV";
	strings[1154] = "glVertexAttrib2fvNV";
	strings[1155] = "glVertexAttrib3fNV";
	strings[1156] = "glVertexAttrib3fvNV";
	strings[1157] = "glVertexAttrib4fNV";
	strings[1158] = "glVertexAttrib4fvNV";
	strings[1159] = "glVertexAttrib1dNV";
	strings[1160] = "glVertexAttrib1dvNV";
	strings[1161] = "glVertexAttrib2dNV";
	strings[1162] = "glVertexAttrib2dvNV";
	strings[1163] = "glVertexAttrib3dNV";
	strings[1164] = "glVertexAttrib3dvNV";
	strings[1165] = "glVertexAttrib4dNV";
	strings[1166] = "glVertexAttrib4dvNV";
	strings[1167] = "glVertexAttrib4ubNV";
	strings[1168] = "glVertexAttrib4ubvNV";
	strings[1169] = "glVertexAttribs1svNV";
	strings[1170] = "glVertexAttribs2svNV";
	strings[1171] = "glVertexAttribs3svNV";
	strings[1172] = "glVertexAttribs4svNV";
	strings[1173] = "glVertexAttribs1fvNV";
	strings[1174] = "glVertexAttribs2fvNV";
	strings[1175] = "glVertexAttribs3fvNV";
	strings[1176] = "glVertexAttribs4fvNV";
	strings[1177] = "glVertexAttribs1dvNV";
	strings[1178] = "glVertexAttribs2dvNV";
	strings[1179] = "glVertexAttribs3dvNV";
	strings[1180] = "glVertexAttribs4dvNV";
	strings[1181] = "glVertexAttribs4ubvNV";
	strings[1182] = "glGenFragmentShadersATI";
	strings[1183] = "glBindFragmentShaderATI";
	strings[1184] = "glDeleteFragmentShaderATI";
	strings[1185] = "glBeginFragmentShaderATI";
	strings[1186] = "glEndFragmentShaderATI";
	strings[1187] = "glPassTexCoordATI";
	strings[1188] = "glSampleMapATI";
	strings[1189] = "glColorFragmentOp1ATI";
	strings[1190] = "glColorFragmentOp2ATI";
	strings[1191] = "glColorFragmentOp3ATI";
	strings[1192] = "glAlphaFragmentOp1ATI";
	strings[1193] = "glAlphaFragmentOp2ATI";
	strings[1194] = "glAlphaFragmentOp3ATI";
	strings[1195] = "glSetFragmentShaderConstantATI";
	strings[1196] = "glDrawMeshArraysSUN";
	strings[1197] = "glPointParameteriNV";
	strings[1198] = "glPointParameterivNV";
	strings[1199] = "glActiveStencilFaceEXT";
	strings[1200] = "glDrawBuffersATI";
	strings[1201] = "glProgramNamedParameter4fNV";
	strings[1202] = "glProgramNamedParameter4dNV";
	strings[1203] = "glProgramNamedParameter4fvNV";
	strings[1204] = "glProgramNamedParameter4dvNV";
	strings[1205] = "glGetProgramNamedParameterfvNV";
	strings[1206] = "glGetProgramNamedParameterdvNV";
	strings[1207] = "glDepthBoundsEXT";
	strings[1208] = "glBlendEquationSeparateEXT";
	strings[1209] = "glBlitFramebufferEXT";
	strings[1210] = "glBlendEquationSeparateATI";
	strings[1211] = "glStencilOpSeparateATI";
	strings[1212] = "glStencilFuncSeparateATI";
	strings[1213] = "glProgramEnvParameters4fvEXT";
	strings[1214] = "glProgramLocalParameters4fvEXT";
	strings[1215] = "glGetQueryObjecti64vEXT";
	strings[1216] = "glGetQueryObjectui64vEXT";
	strings[1217] = "glBlendFuncSeparateINGR";
	strings[1218] = "glCreateDebugObjectMESA";
	strings[1219] = "glClearDebugLogMESA";
	strings[1220] = "glGetDebugLogMESA";
	strings[1221] = "glGetDebugLogLengthMESA";
	strings[1222] = "glPointParameterfSGIS";
	strings[1223] = "glPointParameterfvSGIS";
	strings[1224] = "glIglooInterfaceSGIX";
	strings[1225] = "glDeformationMap3dSGIX";
	strings[1226] = "glDeformationMap3fSGIX";
	strings[1227] = "glDeformSGIX";
	strings[1228] = "glLoadIdentityDeformationMapSGIX";

	//CGL functions
	strings[1499] = "CGLSwapBuffers";

	//GLU functions
	strings[1501] = "gluBeginCurve";
	strings[1502] = "gluBeginPolygon";
	strings[1503] = "gluBeginSurface";
	strings[1504] = "gluBeginTrim";
	strings[1505] = "gluBuild1DMipmapLevels";
	strings[1506] = "gluBuild1DMipmaps";
	strings[1507] = "gluBuild2DMipmapLevels";
	strings[1508] = "gluBuild2DMipmaps";
	strings[1509] = "gluBuild3DMipmapLevels";
	strings[1510] = "gluBuild3DMipmaps";
	strings[1511] = "gluCheckExtension";
	strings[1512] = "gluCylinder";
	strings[1513] = "gluDeleteNurbsRenderer";
	strings[1514] = "gluDeleteQuadric";
	strings[1515] = "gluDeleteTess";
	strings[1516] = "gluDisk";
	strings[1517] = "gluEndCurve";
	strings[1518] = "gluEndPolygon";
	strings[1519] = "gluEndSurface";
	strings[1520] = "gluEndTrim";
	strings[1521] = "gluErrorString";
	strings[1522] = "gluGetNurbsProperty";
	strings[1523] = "gluGetString";
	strings[1524] = "gluGetTessProperty";
	strings[1525] = "gluLoadSamplingMatrices";
	strings[1526] = "gluLookAt";
	strings[1527] = "gluNewNurbsRenderer";
	strings[1528] = "gluNewQuadric";
	strings[1529] = "gluNewTess";
	strings[1530] = "gluNextContour";
	strings[1531] = "gluNurbsCallback";
	strings[1532] = "gluNurbsCallbackData";
	strings[1533] = "gluNurbsCallbackDataEXT";
	strings[1534] = "gluNurbsCurve";
	strings[1535] = "gluNurbsProperty";
	strings[1536] = "gluNurbsSurface";
	strings[1537] = "gluOrtho2D";
	strings[1538] = "gluPartialDisk";
	strings[1539] = "gluPerspective";
	strings[1540] = "gluPickMatrix";
	strings[1541] = "gluProject";
	strings[1542] = "gluPwlCurve";
	strings[1543] = "gluQuadricCallback";
	strings[1544] = "gluQuadricDrawStyle";
	strings[1545] = "gluQuadricNormals";
	strings[1546] = "gluQuadricOrientation";
	strings[1547] = "gluQuadricTexture";
	strings[1548] = "glugluScaleImage";
	strings[1549] = "gluSphere";
	strings[1550] = "gluTessBeginContour";
	strings[1551] = "gluTessBeginPolygon";
	strings[1552] = "gluTessCallback";
	strings[1553] = "gluTessEndContour";
	strings[1554] = "gluTessEndPolygon";
	strings[1555] = "gluTessNormal";
	strings[1556] = "gluTessProperty";
	strings[1557] = "gluTessVertex";
	strings[1558] = "gluUnProject";
	strings[1559] = "gluUnProject4";

	//GLX functions
	strings[1601] = "glXChooseVisual";
	strings[1602] = "glXCreateContext";
	strings[1603] = "glXDestroyContext";
	strings[1604] = "glXMakeCurrent";
	strings[1605] = "glXCopyContext";
	strings[1606] = "glXSwapBuffers";
	strings[1607] = "glXCreateGLXPixmap";
	strings[1608] = "glXDestroyGLXPixmap";
	strings[1609] = "glXQueryExtension";
	strings[1610] = "glXQueryVersion";
	strings[1611] = "glXIsDirect";
	strings[1612] = "glXGetConfig";
	strings[1613] = "glXGetCurrentContext";
	strings[1614] = "glXGetCurrentDrawable";
	strings[1615] = "glXWaitGL";
	strings[1616] = "glXWaitX";
	strings[1617] = "glXUseXFont";
	strings[1618] = "glXQueryExtensionsString";
	strings[1619] = "glXQueryServerString";
	strings[1620] = "glXGetClientString";
	strings[1621] = "glXGetCurrentDisplay";
	strings[1622] = "glXChooseFBConfig";
	strings[1623] = "glXGetFBConfigAttrib";
	strings[1624] = "glXGetFBConfigs";
	strings[1625] = "glXGetVisualFromFBConfig";
	strings[1626] = "glXCreateWindow";
	strings[1627] = "glXDestroyWindow";
	strings[1628] = "glXCreatePixmap";
	strings[1629] = "glXDestroyPixmap";
	strings[1630] = "glXCreatePbuffer";
	strings[1631] = "glXDestroyPbuffer";
	strings[1632] = "glXQueryDrawable";
	strings[1633] = "glXCreateNewContext";
	strings[1634] = "glXMakeContextCurrent";
	strings[1635] = "glXGetCurrentReadDrawable";
	strings[1636] = "glXQueryContext";
	strings[1637] = "glXSelectEvent";
	strings[1638] = "glXGetSelectedEvent";
	strings[1639] = "glXGetProcAddressARB";
	strings[1640] = "glXGetProcAddress";
	strings[1641] = "glXAllocateMemoryNV";
	strings[1642] = "glXFreeMemoryNV";
	strings[1643] = "glXAllocateMemoryMESA";
	strings[1644] = "glXFreeMemoryMESA";
	strings[1645] = "glXGetMemoryOffsetMESA";
	strings[1646] = "glXBindTexImageARB";
	strings[1647] = "glXReleaseTexImageARB";
	strings[1648] = "glXDrawableAttribARB";
	strings[1649] = "glXGetFrameUsageMESA";
	strings[1650] = "glXBeginFrameTrackingMESA";
	strings[1651] = "glXEndFrameTrackingMESA";
	strings[1652] = "glXQueryFrameTrackingMESA";
	strings[1653] = "glXSwapIntervalMESA";
	strings[1654] = "glXGetSwapIntervalMESA";
	strings[1655] = "glXBindTexImageEXT";
	strings[1656] = "glXReleaseTexImageEXT";
	resetCounts();
}


bool ProfileModule::process(vector<Instruction *> *list)
{

	for(int i=0;i<(int)list->size();i++){
		Instruction *iter = (*list)[i];
		instructionCounts[iter->id]++;
		for(int n=0;n<3;n++) {
			instructionBufferSizes[iter->id] += iter->buffers[n].len;
		}
	}

	return true;
}


void ProfileModule::reply(Instruction *instr, int i)
{
	LOG("ProfileModule::reply: Shouldn't happen!\n");
}


bool ProfileModule::sync()
{
	return true;
}


void ProfileModule::resetCounts()
{
	for(int i = 0; i < 1700; i++) {
		instructionCounts[i] = 0;
		for(int n=0;n<3;n++) {
			instructionBufferSizes[i] = 0;
		}
	}
}


void ProfileModule::output()
{
	int values[5] = {0, 0, 0, 0, 0};
	int instructions[5] = {0, 0, 0, 0, 0};
	for(int i = 0; i < 1700; i++) {
		int count = instructionCounts[i];
		if(count > 0) {
			if(count > values[4]) {
				values[0] = values[1];
				values[1] = values[2];
				values[2] = values[3];
				values[3] = values[4];
				values[4] = count;
				instructions[0] = instructions[1];
				instructions[1] = instructions[2];
				instructions[2] = instructions[3];
				instructions[3] = instructions[4];
				instructions[4] = i;
			}
			else if(count > values[3]) {
				values[0] = values[1];
				values[1] = values[2];
				values[2] = values[3];
				values[3] = count;
				instructions[0] = instructions[1];
				instructions[1] = instructions[2];
				instructions[2] = instructions[3];
				instructions[3] = i;
			}
			else if(count > values[2]) {
				values[0] = values[1];
				values[1] = values[2];
				values[2] = count;
				instructions[0] = instructions[1];
				instructions[1] = instructions[2];
				instructions[2] = i;
			}
			else if(count > values[1]) {
				values[0] = values[1];
				values[1] = count;
				instructions[0] = instructions[1];
				instructions[1] = i;
			}
			else if(count > values[0]) {
				values[0] = count;
				instructions[0] = i;
			}
		}
	}
	int count = 1;
	LOG("\n");
	for(int i = 4; i >= 0; i--) {
		LOG("%d. Instruction: %s called %d times!\n", count, strings[instructions[i]], values[i]);
		count++;
	}
	LOG("\n");
	outputBuffers();
}


void ProfileModule::outputBuffers()
{
	int values[5] = {0, 0, 0, 0, 0};
	int instructions[5] = {0, 0, 0, 0, 0};
	for(int i = 0; i < 1700; i++) {
		int count = instructionBufferSizes[i];
		if(count > 0) {
			if(count > values[4]) {
				values[0] = values[1];
				values[1] = values[2];
				values[2] = values[3];
				values[3] = values[4];
				values[4] = count;
				instructions[0] = instructions[1];
				instructions[1] = instructions[2];
				instructions[2] = instructions[3];
				instructions[3] = instructions[4];
				instructions[4] = i;
			}
			else if(count > values[3]) {
				values[0] = values[1];
				values[1] = values[2];
				values[2] = values[3];
				values[3] = count;
				instructions[0] = instructions[1];
				instructions[1] = instructions[2];
				instructions[2] = instructions[3];
				instructions[3] = i;
			}
			else if(count > values[2]) {
				values[0] = values[1];
				values[1] = values[2];
				values[2] = count;
				instructions[0] = instructions[1];
				instructions[1] = instructions[2];
				instructions[2] = i;
			}
			else if(count > values[1]) {
				values[0] = values[1];
				values[1] = count;
				instructions[0] = instructions[1];
				instructions[1] = i;
			}
			else if(count > values[0]) {
				values[0] = count;
				instructions[0] = i;
			}
		}
	}
	int count = 1;
	for(int i = 4; i >= 0; i--) {
		if(values[i] > 0) LOG("%d. Instruction: %s used %lf KBytes!\n", count, strings[instructions[i]], (values[i]/1024.0));
		count++;
	}
	LOG("\n");
	resetCounts();
}
